home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1191 / 1191.xpi / components / rmFx_cmdLineHandler4TB.js
Text File  |  2009-11-10  |  6KB  |  175 lines

  1. /**    
  2.  * rmFx_cmdLineHandler4TB.js                                //gW - 2008-0-05
  3.  * 
  4.  *  
  5.  *    @see https://developer.mozilla.org/en/Chrome/Command_Line
  6.  */
  7.  
  8. // const nsIAppShellService    = Components.interfaces.nsIAppShellService;
  9. const nsISupports           = Components.interfaces.nsISupports;
  10. const nsISupportsString        = Components.interfaces.nsISupportsString;
  11.  
  12. const nsICategoryManager    = Components.interfaces.nsICategoryManager;
  13. const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
  14. // const nsICommandLine        = Components.interfaces.nsICommandLine;
  15. const nsICommandLineHandler = Components.interfaces.nsICommandLineHandler;
  16. const nsIFactory            = Components.interfaces.nsIFactory;
  17. const nsIModule             = Components.interfaces.nsIModule;
  18. const nsIWindowWatcher      = Components.interfaces.nsIWindowWatcher;
  19.  
  20. // CHANGEME: to the chrome URI of your extension or application
  21. // const CHROME_URI = "chrome://reminderfox/content/";
  22.  
  23. // CHANGEME: change the contract id, CID, and category to be unique
  24. // to your application.
  25. const clh_contractID = "@mozilla.org/commandlinehandler/general-startup;1?type=reminderfox";
  26.  
  27. // use uuidgen to generate a unique ID
  28. // CHANGE THIS !!
  29. const clh_CID = Components.ID("{a52fd100-4b89-11dd-ae16-0800200c9a66}");
  30.  
  31. // category names are sorted alphabetically. Typical command-line handlers use a
  32. // category that begins with the letter "m".
  33. const clh_category = "m-reminderfox";
  34.  
  35. /** Utility functions
  36.  */
  37.  
  38. /** The XPCOM component that implements nsICommandLineHandler.
  39.  *  It also implements nsIFactory to serve as its own singleton factory.
  40.  */
  41. const rmFx_AppHandler = {
  42.     
  43.   /* nsISupports */
  44.   QueryInterface : function clh_QI(iid)
  45.   {
  46.     if (iid.equals(nsICommandLineHandler) ||
  47.         iid.equals(nsIFactory) ||
  48.         iid.equals(nsISupports))
  49.       return this;
  50.  
  51.     throw Components.results.NS_ERROR_NO_INTERFACE;
  52.   },
  53.  
  54.   /* nsICommandLineHandler */
  55.       //    C:\>cd \programme\mozilla thunderbird\EN
  56.       //    ..... >thunderbird.exe -reminderFox msgID:4755317C.2080205@web.de
  57.  
  58.   handle : function clh_handle(cmdLine) {
  59.     try {
  60.         // var rmFx_startupID = cmdLine.handleFlagWithParam("messageID", false);    
  61.         var rmFx_startupID = cmdLine.handleFlagWithParam("reminderFox", false);    
  62.         if (rmFx_startupID != null) {
  63.  
  64.           var msgString = cmdLine.handleFlagWithParam("msgString", false);    
  65.  
  66.          var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
  67.                                .getService(nsIWindowWatcher);
  68.          
  69.          var argstring = Components.classes["@mozilla.org/supports-string;1"]
  70.                                    .createInstance(nsISupportsString);
  71.          argstring.data = rmFx_startupID + "|.|" + msgString;
  72.  
  73.  
  74.          wwatch.openWindow(null, "chrome://reminderfox/content/mail/rmFxStartup4msgID.xul", 
  75.             "msgID", "chrome,centerscreen", argstring);
  76.          }
  77.       }
  78.     catch (e) {
  79.       Components.utils.reportError("incorrect parameter passed to -reminderFox on the command line \n"+ e);
  80.     }
  81.  
  82.   },
  83.  
  84.   // CHANGEME: change the help info as appropriate, but
  85.   // follow the guidelines in nsICommandLineHandler.idl
  86.   // specifically, flag descriptions should start at
  87.   // character 24, and lines should be wrapped at
  88.   // 72 characters with embedded newlines,
  89.   // and finally, the string should end with a newline
  90.   //  helpInfo : "  -myapp               Open My Application\n" +
  91.   //           "  -viewapp <uri>       View and edit the URI in My Application,\n" +
  92.   //           "                       wrapping this description\n",
  93.   
  94.   helpInfo : "  -msgID <msgID>       open TB with message msgID \n",
  95.  
  96.   /* nsIFactory */
  97.  
  98.   createInstance : function clh_CI(outer, iid)
  99.   {
  100.     if (outer != null)
  101.       throw Components.results.NS_ERROR_NO_AGGREGATION;
  102.  
  103.     return this.QueryInterface(iid);
  104.   },
  105.  
  106.   lockFactory : function clh_lock(lock)
  107.   {
  108.     /* no-op */
  109.   }
  110. };
  111.  
  112. /**
  113.  * The XPCOM glue that implements nsIModule
  114.  */
  115. const rmFx_AppHandlerModule = {
  116.   /* nsISupports */
  117.   QueryInterface : function mod_QI(iid)
  118.   {
  119.     if (iid.equals(nsIModule) ||
  120.         iid.equals(nsISupports))
  121.       return this;
  122.  
  123.     throw Components.results.NS_ERROR_NO_INTERFACE;
  124.   },
  125.  
  126.   /* nsIModule */
  127.   getClassObject : function mod_gch(compMgr, cid, iid)
  128.   {
  129.     if (cid.equals(clh_CID))
  130.       return rmFx_AppHandler.QueryInterface(iid);
  131.  
  132.     throw Components.results.NS_ERROR_NOT_REGISTERED;
  133.   },
  134.  
  135.   registerSelf : function mod_regself(compMgr, fileSpec, location, type)
  136.   {
  137.     compMgr.QueryInterface(nsIComponentRegistrar);
  138.  
  139.     compMgr.registerFactoryLocation(clh_CID,
  140.                                     "rmFx_AppHandler",
  141.                                     clh_contractID,
  142.                                     fileSpec,
  143.                                     location,
  144.                                     type);
  145.  
  146.     var catMan = Components.classes["@mozilla.org/categorymanager;1"].
  147.       getService(nsICategoryManager);
  148.     catMan.addCategoryEntry("command-line-handler",
  149.                             clh_category,
  150.                             clh_contractID, true, true);
  151.   },
  152.  
  153.   unregisterSelf : function mod_unreg(compMgr, location, type)
  154.   {
  155.     compMgr.QueryInterface(nsIComponentRegistrar);
  156.     compMgr.unregisterFactoryLocation(clh_CID, location);
  157.  
  158.     var catMan = Components.classes["@mozilla.org/categorymanager;1"].
  159.       getService(nsICategoryManager);
  160.     catMan.deleteCategoryEntry("command-line-handler", clh_category);
  161.   },
  162.  
  163.   canUnload : function (compMgr)
  164.   {
  165.     return true;
  166.   }
  167. };
  168.  
  169. /* The NSGetModule function is the magic entry point that XPCOM uses to find what XPCOM objects
  170.  * this component provides
  171.  */
  172. function NSGetModule(comMgr, fileSpec)
  173. {
  174.   return rmFx_AppHandlerModule;
  175. }